Completed
Push — master ( 2281e8...8b163e )
by Justin
01:35
created

Relationship.js ➔ describe(ꞌRelationshipꞌ)   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 91

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 91
rs 8.518

6 Functions

Rating   Name   Duplication   Size   Complexity  
A Relationship.js ➔ ... ➔ it(ꞌtoJSONꞌ) 0 17 1
A Relationship.js ➔ ... ➔ it(ꞌBuildꞌ) 0 12 1
A Relationship.js ➔ ... ➔ it(ꞌCreate with JSONꞌ) 0 21 1
A Relationship.js ➔ ... ➔ it(ꞌCreate plainꞌ) 0 6 1
A Relationship.js ➔ ... ➔ it(ꞌCreate with mixed dataꞌ) 0 21 1
A Relationship.js ➔ ... ➔ it(ꞌconstructor does not copy instancesꞌ) 0 5 1

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
var assert = require('chai').assert,
2
    GedcomX = require('../');
3
4
describe('Relationship', function(){
5
  
6
  it('Create plain', function(){
7
    var newRelationship = new GedcomX.Relationship(),
8
        relationship = GedcomX.Relationship();
9
    assert.instanceOf(newRelationship, GedcomX.Relationship, 'An instance of Relationship is not returned when calling the constructor with new.');
10
    assert.instanceOf(relationship, GedcomX.Relationship, 'An instance of Relationship is not returned when calling the constructor without new.');
11
  });
12
  
13
  it('Create with JSON', function(){
14
    var relationship = GedcomX.Relationship({
15
      type: 'http://gedcomx.org/Couple',
16
      person1: {
17
        resource: 'http://identifier/for/person/1'
18
      },
19
      person2: {
20
        resource: 'http://identifier/for/person/2'
21
      },
22
      facts: [
23
        {
24
          type: 'http://gedcomx.org/Marriage'
25
        }
26
      ]
27
    });
28
    assert.equal(relationship.getType(), 'http://gedcomx.org/Couple');
29
    assert.equal(relationship.getPerson1().getResource(), 'http://identifier/for/person/1');
30
    assert.equal(relationship.getPerson2().getResource(), 'http://identifier/for/person/2');
31
    assert.equal(relationship.getFacts().length, 1);
32
    assert.equal(relationship.getFacts()[0].getType(), 'http://gedcomx.org/Marriage');
33
  });
34
  
35
  it('Create with mixed data', function(){
36
    var relationship = GedcomX.Relationship({
37
      type: 'http://gedcomx.org/Couple',
38
      person1: {
39
        resource: 'http://identifier/for/person/1'
40
      },
41
      person2: {
42
        resource: 'http://identifier/for/person/2'
43
      },
44
      facts: [
45
        GedcomX.Fact({
46
          type: 'http://gedcomx.org/Marriage'
47
        })
48
      ]
49
    });
50
    assert.equal(relationship.getType(), 'http://gedcomx.org/Couple');
51
    assert.equal(relationship.getPerson1().getResource(), 'http://identifier/for/person/1');
52
    assert.equal(relationship.getPerson2().getResource(), 'http://identifier/for/person/2');
53
    assert.equal(relationship.getFacts().length, 1);
54
    assert.equal(relationship.getFacts()[0].getType(), 'http://gedcomx.org/Marriage');
55
  });
56
  
57
  it('Build', function(){
58
    var relationship = GedcomX.Relationship()
59
      .setType('http://gedcomx.org/Couple')
60
      .setPerson1(GedcomX.ResourceReference().setResource('http://identifier/for/person/1'))
61
      .setPerson2(GedcomX.ResourceReference().setResource('http://identifier/for/person/2'))
62
      .addFact(GedcomX.Fact().setType('http://gedcomx.org/Marriage'));
63
    assert.equal(relationship.getType(), 'http://gedcomx.org/Couple');
64
    assert.equal(relationship.getPerson1().getResource(), 'http://identifier/for/person/1');
65
    assert.equal(relationship.getPerson2().getResource(), 'http://identifier/for/person/2');
66
    assert.equal(relationship.getFacts().length, 1);
67
    assert.equal(relationship.getFacts()[0].getType(), 'http://gedcomx.org/Marriage');
68
  });
69
  
70
  it('toJSON', function(){
71
    var data = {
72
      type: 'http://gedcomx.org/Couple',
73
      person1: {
74
        resource: 'http://identifier/for/person/1'
75
      },
76
      person2: {
77
        resource: 'http://identifier/for/person/2'
78
      },
79
      facts: [
80
        {
81
          type: 'http://gedcomx.org/Marriage'
82
        }
83
      ]
84
    }, relationship = GedcomX.Relationship(data);
85
    assert.deepEqual(relationship.toJSON(), data);
86
  });
87
  
88
  it('constructor does not copy instances', function(){
89
    var obj1 = GedcomX.Relationship();
90
    var obj2 = GedcomX.Relationship(obj1);
91
    assert.strictEqual(obj1, obj2);
92
  });
93
  
94
});